Many devices that read data use a “cache” technology that avoids unnecessary readout of data from a low-speed storage device each time and speeds up data readout by temporarily retaining frequently-used data in a high-speed storage device. The “cache” technology is also often used for writing data. Further, a high-speed storage device used for a “cache” and replicated data may also be called “cache.” In recent years, a technology for enhancing functionality of or increasing performance of a cache has been developed.
An example of a technology for increasing performance of a cache is disclosed in PTL 1.
A storage subsystem of PTL 1 reduces an influence of write time to a slow storage device on write time to a fast storage device by providing separate write caches for different write speeds for storage devices with different write speeds.
As a result of the operation described above, in the storage subsystem of PTL 1, data write processing does not stagnate even if there is a difference in data write speed from a cache to each storage device.
Another example of a technology for increasing performance of a cache is disclosed in PTL 2.
A printed document processing system of PTL 2 outputs image data output from a plurality of raster image generation units to a printer while retaining the data in a cache. The printed document processing system determines whether or not to retain image data in the cache if remaining capacity of the cache is low by use of an image data score. The image data score is determined by type or complexity of objects, or load, required time, data size, necessity for color space conversion, enlargement factor, existence of rotation, existence of gradation process, or an accumulated cache inquiry frequency, in generation of a raster image, or the like.
As a result of the operation described above, the printed document processing system of PTL 2 properly judges whether or not data are retained in the cache based on the image data score being properly defined.
In case that a server reads data from a storage, the server and the storage may respectively include a cache. The cache on the server side is referred to as “server cache” and the cache on the storage side is referred to as “storage cache.”
In a configuration including both a server cache and a storage cache, data read by the server are temporarily retained in both the server cache and the storage cache. Therefore, there may be a case in which a piece of data exists in both the server cache and the storage cache. However, the data on the storage cache are not referred to until the data on the server cache are erased, and therefore it is possible that a situation that the storage cache is unnecessarily occupied occurs.
In a case of data being data read only by one particular server (hereinafter referred to as “independent data”), it is not until data on a server cache in the particular server are erased that the corresponding data on a storage cache are read. On the other hand, in a case of data being data read by a plurality of servers (hereinafter referred to as “shared data”), if data on a server cache in at least one server of the plurality of servers are erased, the corresponding data on a storage cache are read. Therefore, in the storage cache, a hit rate can be improved within a limited cache area by retaining shared data that are more likely to be read rather than retaining independent data that are less likely to be read.
An example of a technology for increasing performance of a cache by separately handling independent data and shared data is disclosed in PTL 3.
In a disk array device of PTL 3, a cache in a shared disk is placed in a shared cache in a disk interface unit and a cache in an exclusive disk is placed in an exclusive cache in a host interface unit.
As a result of the operation described above, in the disk array device of PTL 3, performance of the disk array device is not degraded in case that a host interface unit and a disk interface unit are added.
Another example of a technology for increasing performance of a cache by separately handling independent data and shared data is disclosed in PTL 4.
In a multi-core processor system of PTL 4, a shared cache controller distinguishes whether a variable is shared data shared between threads or non-shared data not shared between threads, in accordance with a program code. The shared cache controller retains shared data in a shared memory into a shared cache memory and non-shared data in a shared memory into a distributed cache.
As a result of the operation described above, the multi-core processor system of PTL 4 efficiently utilizes an area in the shared cache memory.